/**
 * @description 执行自动更新检查
 * @author: hruomei
 * @update 暂无
 * @date: 2020-08-24 17:09:32
 */

const { autoUpdater } = require("electron-updater")
const { build } = require("../../../package.json")
 
function handleUpdate(mainWindow) {
    const message = {
        error: '检查更新出错',
        checking: '正在检查更新……',
        updateAva: '检测到新版本，正在下载……',
        updateNotAva: '现在使用的就是最新版本，不用更新'
    }

    autoUpdater.setFeedURL(build.publish[0].url) // 设置下载地址
 
    // 检查更新出错
    autoUpdater.on('error', (e) => {
        console.log('autoUpdater-error:::', e, arguments)
 
        sendUpdateMessage(message.error)
    })
 
    // 检查是否有版本更新
    autoUpdater.on('checking-for-update', () => {
        console.log('checking-for-update:::', arguments)
 
        // sendUpdateMessage(message.checking)
    })
 
    // 检测到有版本更新
    autoUpdater.on('update-available', () => {
        console.log('update-available:::', arguments)
 
        sendUpdateMessage(message.updateAva)
    })
 
    // 未发现有新版本
    autoUpdater.on('update-not-available', () => {
        console.log('update-not-available:::', arguments)
 
        sendUpdateMessage(message.updateNotAva)
    })
 
    // 更新下载进度事件
    autoUpdater.on('download-progress', progressObj => {
        console.log('download-progress:::', progressObj)
        
        mainWindow.setProgressBar(progressObj.percent / 100)
    })
 
    // 下载完成，询问用户是否更新
    autoUpdater.on('update-downloaded', (event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) => {
	    sendUpdateMessage('新版本已下载，重启后自动安装~');
	    autoUpdater.quitAndInstall();
        // mainWindow.webContents.send('ev-should-update', {
        //     event,
        //     releaseNotes,
        //     releaseName,
        //     releaseDate,
        //     updateUrl,
        //     quitAndUpdate
        // })
    })

	autoUpdater.checkForUpdates().then(result => {
		console.log('Check Update Success', result)
	}).catch(error => {
		console.log('Check Update Error', error)
	})

	function sendUpdateMessage(text) {
        mainWindow.webContents.send('ev-message', text)
    }
}
 
module.exports = {
    handleUpdate
}